package com.xuecheng.content.feignclient.auth;

import com.xuecheng.auth.model.po.XcUser;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * 像这个项目，有多个client都是远程调用auth-api服务，所以给每个client加contextId，
 * 因为，Spring的默认行为：
 * 如果多个@FeignClient的value/name相同（都指向auth-api），即使它们的path或方法路径不同，
 * Spring仍会认为它们是同一个Bean定义（因为Bean的默认名称由value/name决定）。
 * 而FeignClientSpecification的Bean名称默认基于value/name生成，所以就会导致多个同名
 * 的FeignClientSpecification这种Bean，所以就会spring容器加载时就会报错，服务名不同的没事
 */
@FeignClient(value="auth-api",path="/auth",contextId="user",
        fallbackFactory= XcUserClientFactory.class)
@RequestMapping("/user")
public interface XcUserClient {
    @PostMapping
    public XcUser saveUser(@RequestBody XcUser user);

    @PostMapping("/createAccount")
    public XcUser createAccount(@RequestParam("companyId")Long companyId);
}
